﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace UsersForms
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }

        /*
         * form3是我们最终要进入的界面，你要创建两张表，之前那张是用来存储用户登入信息的，然后这里，你就在数据库
         * 随便创建一张表，里面有数据就行，然后和dataGridView控件绑定，供我们查询、删除、更新和添加等各种操作就行了
         * 
         * 思路：
         * 1.查询，这里的查询和之前登入的时候查询步骤类似，如果前面会了，这里就比较简单l
         * 2.删除，我们选中一行数据，弹出一个提示，问用户是否确定要删除，确定的话就删除
         * 3.更新和添加，我们用弹出同一个窗口（from4），更新的时候要选中一行，然后再点击更新
         * 
         * 我再细说一下更新和添加这两点：因为是同一个窗口，要区别什么时候是更新，什么时候是添加,
         * 所以在from4我定义一个count属性和一个带有参数的form4构造函数，
         * 当我们要添加时，那就直接new from4()调用无参构造函数，这时我给count赋一个值
         * 当我们要更新时，那就new一个带有参数的，把要更新的那一行数据作为参数传到from4，就传出去，在form4的文本框中显示那一行的数据，这时你可以自行更改，同时给count赋一个值
         * 最后根据count的值的不同，执行相应的代码
         * 
         */

        //查询
        private void button1_Click(object sender, EventArgs e)
        {
            string sql = string.Format("select * from School where names like '%{0}%'", textBox1.Text);//Shool，你换成其他的，你可以根据textBox1控件前面的标签写的是什么进行替换，这个查询语句又叫模糊查询，like后面你可以不用修改

            dataGridView1.DataSource = DBHelper.Select(sql);
        }

        //添加
        private void button2_Click(object sender, EventArgs e)
        {
            Form4 form4 = new Form4();
            form4.Show();
        }

        //更新
        private void button3_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count == 1)//这个是判断你有么有选中一行，不选中不行
            {
                //获取选中的行的id、name、age和sex
                var id = dataGridView1.SelectedCells[0].Value.ToString();//当前选中的行单元格下标为的ID的值
                var name = dataGridView1.SelectedCells[1].Value.ToString();//下面的同上原理，根据单元格下标取值
                var age = dataGridView1.SelectedCells[2].Value.ToString();
                var sex = dataGridView1.SelectedCells[3].Value.ToString();

                Form4 form4 = new Form4(name, age, sex, id);//将参数传进去
                form4.Show();

            }
            else
            {
                MessageBox.Show("你可能没有选中，或者选中了不止一行");
            }
        }

        //初始化form3窗口，我们可以对这个窗口进行设置
        private void Form3_Load(object sender, EventArgs e)
        {
            string sql = "select * from School";

            dataGridView1.DataSource = DBHelper.Select(sql);//将查询到的数据和dataGridView1绑定，一开始的时候让dataGridView1控制中有数据

            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;//当我们随便选中dataGridView1中的一个单元格的时候，它会选中整行

            dataGridView1.ReadOnly = false;//只读的，不允许用户更改数据

            dataGridView1.AllowUserToAddRows = false;//不允许用户添加新行
        }

        //刷新数据
        private void button5_Click(object sender, EventArgs e)
        {
            /*这里应该很简单，直接查询全部
             */
            string sql = "select * from School";

            dataGridView1.DataSource = DBHelper.Select(sql);//将查询到的数据和dataGridView1绑定，绑定之后就可以显示数据了
        }

        //删除
        private void button4_Click(object sender, EventArgs e)
        {


            if (dataGridView1.SelectedRows.Count == 1)//这个也是判断是否选中一行，要选中一行才能执行删除的SQL语句
            {
                var id = dataGridView1.SelectedCells[0].Value.ToString();//当前选中的行单元格下标为的ID的值

                var len = MessageBox.Show("确定要删除当前选中的行吗？", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);//参数：从左往右，第一和第二应该不用说，第三和第四，你把鼠标停放在OKCancel和Warning上就知道什么意思了

                if (DialogResult.OK == len)//在弹出的对话框中如果点击确定，就执行删除的行
                {
                    /*
                     * 其实下面的代码我也是从前面直接复制过来，都是一样的，因为都是调用DeleteUpdateInsert这个方法，
                     * 只要修改字符串sql就行了，是添加，你就写添加的，是更新，你就写更新的，是删除，你就写删除的
                     * 所以，不用看着好多，其实好多可以复制张贴的
                     
                     */
                    string sql = string.Format("delete School where id={0}", id);

                    var b = DBHelper.DeleteUpdateInsert(sql);


                    if (b >= 1)
                    {
                        MessageBox.Show("删除成功！！");

                        string sqlSelect = "select * from Shop";

                        dataGridView1.DataSource = DBHelper.Select(sqlSelect);
                    }
                }


            }
            else
            {
                MessageBox.Show("你可能没有选中，或者选中了不止一行");
            }
        }
    }
}
